/*
 * Copyright (C) 2005 Johan Maasing johan at zoom.nu Licensed under the Apache
 * License, Version 2.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
 * or agreed to in writing, software distributed under the License is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */
package nu.zoom.swing.desktop.worker;

import java.awt.EventQueue;

import nu.zoom.swing.text.ConsoleBean;

/**
 * 
 * @author $Author$
 * @version $Revision$
 * 
 */
public class ThreadTaskImpl implements ThreadTask {
	private EventQueueCallback eventQueueCallback = null;

	private ThreadCallback threadCallback = null;

	private PlainCallback plainCallback;

	private ConsoleBean console;

	public ThreadTaskImpl(ConsoleBean console,
			EventQueueCallback eventQueueCallback,
			ThreadCallback threadCallback, PlainCallback plainCallback) {
		super();
		this.console = console;
		this.threadCallback = threadCallback;
		this.eventQueueCallback = eventQueueCallback;
		this.plainCallback = plainCallback;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see nu.zoom.swing.desktop.worker.TestThreadTask#execute()
	 */
	public void execute() {
		if (EventQueue.isDispatchThread()) {
			console.error(getClass().getCanonicalName()
					+ "  executing on eventqueue");
		} else {
			console.info("Not operating on eventqueue ");
		}
		console.println("Execute called on " + this + " thread "
				+ Thread.currentThread());
		if (eventQueueCallback != null) {
			console
					.warn("Event queue callback to " + eventQueueCallback
							+ "\n");
			eventQueueCallback.callback();
		}
		if (threadCallback != null) {
			console.warn("Thread callback to " + threadCallback + "\n");
			threadCallback.callback();
		}
		if (plainCallback != null) {
			console.warn("Plain callback to " + plainCallback + "\n");
			plainCallback.callback();
		}
	}

}
